AWK একটি প্রোগ্রামিং ভাষা হিসেবে অ্যারেস এবং অ্যাসোসিয়েটিভ অ্যারেস সমর্থন করে। অ্যারেগুলি ব্যবহার করে আপনি বড় আকারের ডেটা সেট সংরক্ষণ এবং পরিচালনা করতে পারেন। অ্যাসোসিয়েটিভ অ্যারেস আরও শক্তিশালী, কারণ এগুলো সাধারণ ইন্ডেক্সের পরিবর্তে কী (key) ব্যবহার করে ডেটা সংরক্ষণ এবং অ্যাক্সেস করতে পারে।
AWK এ অ্যারেগুলি সাধারণ সংখ্যা সূচক ব্যবহার করে কাজ করে। প্রতিটি ইন্ডেক্স একটি মান নির্দেশ করে। AWK এ অ্যারে ব্যবহার করা সহজ এবং সরাসরি সূচকের মাধ্যমে অ্যাক্সেস করা যায়।
array[1] = "Apple"
array[2] = "Banana"
array[3] = "Cherry"
awk 'BEGIN {
fruits[1] = "Apple"
fruits[2] = "Banana"
fruits[3] = "Cherry"
for (i = 1; i <= 3; i++) {
print fruits[i]
}
}'
এটি অ্যারেতে সংরক্ষিত সমস্ত মান প্রিন্ট করবে।
AWK এর অ্যাসোসিয়েটিভ অ্যারেগুলি শক্তিশালী কারণ এগুলো সাধারণ সংখ্যার পরিবর্তে স্ট্রিং কী (key) ব্যবহার করে মান সংরক্ষণ করে। এটি ডেটা ম্যাপিং এবং জটিল ডেটা স্ট্রাকচারের জন্য উপযুক্ত।
city_population["New York"] = 8419600
city_population["Los Angeles"] = 3980400
city_population["Chicago"] = 2716000
awk 'BEGIN {
city_population["New York"] = 8419600
city_population["Los Angeles"] = 3980400
city_population["Chicago"] = 2716000
for (city in city_population) {
print city ": " city_population[city]
}
}'
এটি অ্যাসোসিয়েটিভ অ্যারের সমস্ত কী এবং সংশ্লিষ্ট মান প্রিন্ট করবে।
AWK এ অ্যারের দৈর্ঘ্য নির্ধারণ করার জন্য একটি কাস্টম কাউন্টার ব্যবহার করা হয়, কারণ অ্যারের দৈর্ঘ্য বের করার জন্য সরাসরি ফাংশন নেই।
awk 'BEGIN {
items[1] = "Pen"
items[2] = "Pencil"
items[3] = "Eraser"
count = 0
for (i in items) {
count++
}
print "Number of items: " count
}'
AWK এ delete
স্টেটমেন্ট ব্যবহার করে অ্যারের নির্দিষ্ট উপাদান মুছে ফেলা যায়।
awk 'BEGIN {
numbers[1] = 10
numbers[2] = 20
numbers[3] = 30
delete numbers[2]
for (i in numbers) {
print i, numbers[i]
}
}'
এটি numbers[2]
উপাদান মুছে ফেলবে এবং বাকি উপাদান প্রিন্ট করবে।
AWK এ অ্যাসোসিয়েটিভ অ্যারে ব্যবহার করে ডেটা বিশ্লেষণ করা যায়। যেমন, একটি ফাইলে প্রতিটি লাইনের প্রথম ফিল্ডের ফ্রিকোয়েন্সি গণনা করা:
awk '{ count[$1]++ } END { for (word in count) print word, count[word] }' filename.txt
এটি filename.txt
ফাইলের প্রথম ফিল্ডের প্রতিটি ভিন্ন মানের সংখ্যা প্রিন্ট করবে।
AWK এ অ্যারেস এবং অ্যাসোসিয়েটিভ অ্যারেস ব্যবহার করে বড় আকারের ডেটা সংরক্ষণ এবং প্রক্রিয়াকরণ করা সহজ। সাধারণ অ্যারেগুলি সূচক ব্যবহার করে এবং অ্যাসোসিয়েটিভ অ্যারেগুলি স্ট্রিং কীগুলোর মাধ্যমে ডেটা অ্যাক্সেস ও পরিচালনা করতে পারে। এই বৈশিষ্ট্যগুলির মাধ্যমে ব্যবহারকারীরা ডেটা বিশ্লেষণ ও প্রসেসিংয়ের কাজকে আরও কার্যকরী করতে পারেন।
AWK এবং অন্যান্য প্রোগ্রামিং ভাষায় arrays (অ্যারে) হল একধরনের ডেটা স্ট্রাকচার, যা একাধিক উপাদানকে একত্রে সংরক্ষণ এবং প্রক্রিয়াকরণ করতে ব্যবহৃত হয়। অ্যারে ব্যবহার করে, আপনি ডেটার একটি সেটকে একটি পরিবর্তনশীলের মধ্যে সংরক্ষণ করতে পারেন এবং প্রয়োজন অনুযায়ী সেই ডেটা অ্যাক্সেস করতে পারেন।
AWK-তে অ্যারেগুলি সাধারণত অ্যাসোসিয়েটিভ অ্যারে হিসেবে কাজ করে, যা সূচক (index) হিসেবে সংখ্যা বা স্ট্রিং উভয়কেই ব্যবহার করতে পারে।
Array হল একটি ডেটা স্ট্রাকচার যা একাধিক ভ্যালুকে একত্রে সংরক্ষণ করতে সক্ষম। প্রোগ্রামাররা অ্যারেতে একাধিক ডেটা সংরক্ষণ এবং সেগুলি পুনরায় অ্যাক্সেস করার জন্য ব্যবহার করেন। AWK-তে অ্যারেগুলি অ্যাসোসিয়েটিভ অ্যারে হিসেবে কাজ করে, যা কীগুলোর ভিত্তিতে মান সংরক্ষণ করে।
# সাধারণ অ্যারে যেখানে ইনডেক্স সংখ্যা
myArray[1] = "apple"
myArray[2] = "banana"
myArray[3] = "cherry"
# অ্যাসোসিয়েটিভ অ্যারে যেখানে ইনডেক্স স্ট্রিং
myArray["fruit1"] = "apple"
myArray["fruit2"] = "banana"
AWK-তে অ্যারে সাধারণত স্ক্রিপ্টের মধ্যে সরাসরি মান অ্যাসাইনমেন্টের মাধ্যমে ইনিশিয়ালাইজ করা হয়।
awk 'BEGIN {
fruits[1] = "apple"
fruits[2] = "banana"
fruits[3] = "cherry"
for (i = 1; i <= 3; i++) {
print "Fruit", i, ":", fruits[i]
}
}'
এই স্ক্রিপ্টটি অ্যারের ইনিশিয়ালাইজেশন দেখায় এবং প্রতিটি উপাদান প্রিন্ট করে। আউটপুট হবে:
Fruit 1 : apple
Fruit 2 : banana
Fruit 3 : cherry
AWK-তে অ্যারেগুলিতে স্ট্রিং ইনডেক্স ব্যবহার করা যায়, যা অ্যাসোসিয়েটিভ অ্যারের মতো কাজ করে।
awk 'BEGIN {
studentGrades["Alice"] = 90
studentGrades["Bob"] = 85
studentGrades["Charlie"] = 92
for (name in studentGrades) {
print name, "scored", studentGrades[name]
}
}'
আউটপুট হতে পারে:
Alice scored 90
Bob scored 85
Charlie scored 92
নোট: অ্যারেগুলিতে ইনডেক্সগুলির ক্রম পূর্বনির্ধারিত নয়; এটি নির্ভর করে AWK এর ইন্টারপ্রিটেশন পদ্ধতির ওপর।
AWK-তে অ্যারের মান যোগ করা সাধারণত সরাসরি অ্যাসাইনমেন্ট অপারেটরের মাধ্যমে করা হয়। নতুন ইনডেক্স এবং ভ্যালু অ্যাসাইন করলেই তা অ্যারেতে যোগ হয়।
awk 'BEGIN {
numbers[1] = 10
numbers[2] = 20
# নতুন মান যোগ করা
numbers[3] = 30
for (i = 1; i <= 3; i++) {
print "Number", i, ":", numbers[i]
}
}'
AWK-তে delete
কীওয়ার্ড ব্যবহার করে অ্যারের একটি উপাদান মুছে ফেলা যায়।
awk 'BEGIN {
fruits[1] = "apple"
fruits[2] = "banana"
fruits[3] = "cherry"
# দ্বিতীয় উপাদান মুছে ফেলা
delete fruits[2]
for (i = 1; i <= 3; i++) {
if (i in fruits) {
print "Fruit", i, ":", fruits[i]
}
}
}'
এখানে, delete fruits[2]
কমান্ডটি অ্যারের দ্বিতীয় উপাদান মুছে ফেলবে।
AWK-তে অ্যারে একটি শক্তিশালী ডেটা স্ট্রাকচার যা ডেটা সংরক্ষণ এবং প্রক্রিয়াকরণে সহায়ক। অ্যারেগুলি সংখ্যাসূচক এবং স্ট্রিং ইনডেক্স উভয়ভাবেই কাজ করতে পারে এবং সরাসরি মান অ্যাসাইনমেন্টের মাধ্যমে ইনিশিয়ালাইজ করা যায়। অ্যারেতে মান যোগ করা, মুছে ফেলা এবং লুপের মাধ্যমে অ্যাক্সেস করা যায়। AWK-তে অ্যারের ব্যবহার প্রোগ্রামিংকে আরও সহজ এবং কার্যকর করে তোলে।
AWK প্রোগ্রামিং ভাষায় Associative Arrays একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ডেটা সংগ্রহ ও প্রক্রিয়াকরণকে আরও কার্যকরী এবং সহজ করে তোলে। সাধারণ অ্যারেগুলি সংখ্যাসূচক ইনডেক্স ব্যবহার করে, কিন্তু AWK এর Associative Arrays (অ্যাসোসিয়েটিভ অ্যারে) স্ট্রিং বা টেক্সট ইনডেক্স ব্যবহার করতে পারে, যা ডেটা ম্যাপিং বা কীগুলোর সাথে মান সংরক্ষণের জন্য বিশেষভাবে উপযোগী।
Associative Arrays এমন অ্যারে যা ইনডেক্স হিসেবে স্ট্রিং বা টেক্সট ব্যবহার করতে পারে। এর মাধ্যমে আপনি কীগুলোর সাথে মান সংরক্ষণ করতে পারেন এবং সেই কীগুলোর মাধ্যমে মান অ্যাক্সেস করতে পারেন।
array_name[key] = value
ধরা যাক, একটি ফাইল names.txt
আছে, যেখানে প্রতিটি লাইনে নাম রয়েছে। আমরা প্রতিটি নামের উপস্থিতি গণনা করতে চাই।
names.txt
এর উদাহরণ:
John
Emily
John
Mark
Sophia
Emily
AWK স্ক্রিপ্ট:
awk '{ count[$1]++ } END { for (name in count) print name, count[name] }' names.txt
বর্ণনা:
count
অ্যারেতে ইনডেক্স হিসেবে ব্যবহার করা হয়েছে।count[$1]++
প্রতিটি নামের সংখ্যা গণনা করে।END
ব্লকে লুপ ব্যবহার করে প্রতিটি নাম এবং তার সংখ্যা প্রিন্ট করা হয়।আউটপুট:
John 2
Emily 2
Mark 1
Sophia 1
AWK এ Associative Arrays ব্যবহার করে মান যোগ বা পরিবর্তন করা যায়।
awk 'BEGIN {
student_scores["John"] = 85
student_scores["Emily"] = 92
student_scores["Mark"] = 76
student_scores["Mark"] = 80 # মান পরিবর্তন করা
for (student in student_scores) {
print student ": " student_scores[student]
}
}'
আউটপুট:
John: 85
Emily: 92
Mark: 80
ধরা যাক, আমাদের কাছে একটি বিক্রয় রিপোর্ট sales.txt
ফাইল আছে যেখানে বিক্রেতার নাম এবং বিক্রয়ের সংখ্যা রয়েছে। আমরা চাই প্রতিটি বিক্রেতার মোট বিক্রয় যোগ করতে।
sales.txt
এর উদাহরণ:
John 10
Emily 5
John 7
Mark 3
Emily 9
AWK স্ক্রিপ্ট:
awk '{ sales[$1] += $2 } END { for (seller in sales) print seller, "Total sales:", sales[seller] }' sales.txt
বর্ণনা:
sales[$1] += $2
অ্যারেতে প্রথম কলামের নামকে ইনডেক্স হিসেবে ব্যবহার করে এবং দ্বিতীয় কলামের মান যোগ করে।END
ব্লকে প্রতিটি বিক্রেতার নাম এবং তার মোট বিক্রয় প্রিন্ট করা হয়।আউটপুট:
John Total sales: 17
Emily Total sales: 14
Mark Total sales: 3
AWK এ delete
কিওয়ার্ড ব্যবহার করে অ্যারেতে কোনো ইনডেক্স মুছে ফেলা যায়।
awk 'BEGIN {
scores["John"] = 90
scores["Emily"] = 95
delete scores["John"] # John এর মান মুছে ফেলা
for (name in scores) {
print name, scores[name]
}
}'
আউটপুট:
Emily 95
AWK এ Associative Arrays ব্যবহার করে কীগুলোর মাধ্যমে ডেটা সংরক্ষণ এবং অ্যাক্সেস করা সম্ভব, যা ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণের সময় অত্যন্ত কার্যকরী। এটি ডেটা গণনা, মান যোগ বা পরিবর্তন, এবং কীগুলোর ভিত্তিতে ডেটা প্রক্রিয়াকরণের কাজকে সহজ করে। Associative Arrays এর ব্যবহার AWK এর শক্তিশালী বৈশিষ্ট্যগুলোর মধ্যে একটি, যা জটিল ডেটা প্রক্রিয়াকরণের কাজকে আরও দ্রুত এবং সহজ করে তোলে।
AWK তে অ্যারের ব্যবহার খুবই সাধারণ এবং শক্তিশালী হলেও, সাধারণত অ্যারে একমাত্রিক হয়। তবে, AWK তে Multidimensional Arrays ব্যবহার করে আরও জটিল ডেটা স্ট্রাকচার তৈরি করা যায়। AWK তে সত্যিকারের Multidimensional Array নেই, তবে অ্যারে ইনডেক্সে স্ট্রিং কনক্যাটেনেশন ব্যবহার করে এমন অ্যারের মতো আচরণ করা যায়।
AWK তে Multidimensional Array তৈরি করতে, একাধিক ইনডেক্স ব্যবহার করে একটি স্ট্রিং তৈরি করা হয়। সাধারণত, দুটি ইনডেক্স কনক্যাটেনেট করতে আলাদা করার জন্য একটি সেপারেটর (যেমন কমা বা স্পেস) ব্যবহার করা হয়।
awk '{
data[$1, $2] = $3
} END {
for (key in data) {
split(key, indices, SUBSEP)
print "Row:", indices[1], "Column:", indices[2], "Value:", data[key]
}
}' input.txt
ব্যাখ্যা:
data[$1, $2]
একটি অ্যারের ইনডেক্স যা $1
এবং $2
এর মান সংযুক্ত করে তৈরি করা হয়েছে।split(key, indices, SUBSEP)
কমান্ডটি SUBSEP
দ্বারা বিভক্ত করে মূল ইনডেক্সকে পৃথক করে এবং indices
অ্যারেতে সংরক্ষণ করে।SUBSEP
হল AWK এর ডিফল্ট ইনডেক্স সেপারেটর, যা সাধারণত ASCII 28 চর হিসেবে ব্যবহৃত হয়। এটি মাল্টিডাইমেনশনাল অ্যারের ইনডেক্সকে আলাদা রাখতে সাহায্য করে।
AWK তে Multidimensional Array ব্যবহার করে বিভিন্ন ধরনের ডেটা বিশ্লেষণ করা যায়।
awk '{
table[$1, $2] = $3
}
END {
print "Displaying Table:"
for (key in table) {
split(key, indices, SUBSEP)
print "Row:", indices[1], "Column:", indices[2], "Value:", table[key]
}
}' table.txt
এখানে table.txt
ফাইলের প্রথম এবং দ্বিতীয় কলামের মান দিয়ে table
অ্যারের ইনডেক্স তৈরি করা হয়েছে এবং তৃতীয় কলামের মান সেই ইনডেক্সে সংরক্ষণ করা হয়েছে।
awk '{
sales[$1, $2] += $3
}
END {
print "Total Sales Data:"
for (key in sales) {
split(key, indices, SUBSEP)
print "Store:", indices[1], "Product:", indices[2], "Sales:", sales[key]
}
}' sales_data.txt
এখানে sales_data.txt
ফাইলের ডেটা থেকে প্রতিটি স্টোর এবং পণ্যের জন্য বিক্রির যোগফল বের করা হয়েছে।
AWK তে Multidimensional Array এর মাধ্যমে জটিল ডেটা স্ট্রাকচার সংরক্ষণ ও বিশ্লেষণ করা যায়। ইনডেক্স কনক্যাটেনেশন এবং SUBSEP
ব্যবহার করে Multidimensional Array তৈরি করা হয়। এটি বিভিন্ন ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণের কাজ সহজ করে এবং জটিল ডেটা মডেলকে AWK প্রোগ্রামে কার্যকরভাবে হ্যান্ডল করতে সাহায্য করে।
AWK প্রোগ্রামিং ভাষায় অ্যারে ব্যবহারের ক্ষমতা রয়েছে, যা ডেটা সংরক্ষণ এবং প্রক্রিয়াকরণের জন্য অত্যন্ত কার্যকর। AWK এ অ্যারে সাধারণত অ্যাসোসিয়েটিভ হয়, অর্থাৎ অ্যারের ইনডেক্স হিসেবে সংখ্যার পাশাপাশি স্ট্রিংও ব্যবহার করা যায়। নিচে AWK এ অ্যারে ম্যানিপুলেশন এবং ইটারেশন সম্পর্কে বিস্তারিত আলোচনা করা হলো।
AWK এ অ্যারে ডিক্লারেশন করতে আলাদা কোনও কীওয়ার্ডের প্রয়োজন নেই। সরাসরি অ্যারের ইনডেক্স ব্যবহার করে উপাদান সংযোজন করা যায়।
awk 'BEGIN {
fruits["apple"] = 10
fruits["banana"] = 15
fruits["cherry"] = 7
print "Number of apples:", fruits["apple"]
}'
এখানে, fruits
অ্যারে তৈরি করা হয়েছে এবং বিভিন্ন ইনডেক্সে মান সংযোজন করা হয়েছে। fruits["apple"]
এর মান ১০।
AWK এ অ্যারের উপাদানগুলির উপর ইটারেশন করতে for
লুপ ব্যবহার করা হয়।
awk 'BEGIN {
fruits["apple"] = 10
fruits["banana"] = 15
fruits["cherry"] = 7
for (fruit in fruits) {
print fruit, ":", fruits[fruit]
}
}'
এখানে, for (fruit in fruits)
লুপটি প্রতিটি ইনডেক্সের উপর ইটারেট করে এবং অ্যারের ইনডেক্স এবং তার মান প্রিন্ট করে।
AWK এ delete
কীওয়ার্ড ব্যবহার করে অ্যারের নির্দিষ্ট উপাদান মুছে ফেলা যায়।
awk 'BEGIN {
fruits["apple"] = 10
fruits["banana"] = 15
fruits["cherry"] = 7
delete fruits["banana"]
for (fruit in fruits) {
print fruit, ":", fruits[fruit]
}
}'
এখানে, delete fruits["banana"]
ব্যবহার করে banana
উপাদানটি মুছে ফেলা হয়েছে।
AWK এ অ্যারে ব্যবহার করে ফাইলের শব্দ গোনা একটি সাধারণ কাজ।
awk '{
for (i = 1; i <= NF; i++) {
words[$i]++
}
}
END {
for (word in words) {
print word, ":", words[word]
}
}' input.txt
এখানে, input.txt
ফাইলের প্রতিটি শব্দকে words
অ্যারেতে ইনডেক্স হিসেবে গণনা করা হয়েছে। words[$i]++
প্রতিটি শব্দের সংখ্যা বৃদ্ধি করে। END
ব্লকে প্রতিটি ইনডেক্স এবং তার মান প্রিন্ট করা হয়েছে।
AWK এ মাল্টি-ডাইমেনশনাল অ্যারে সাপোর্ট নেই, তবে কাস্টম স্ট্রিং ব্যবহার করে মাল্টি-ডাইমেনশনাল অ্যারে হিসেবে ব্যবহার করা যায়।
awk 'BEGIN {
data["row1,col1"] = 5
data["row1,col2"] = 10
data["row2,col1"] = 15
print "Value at row1,col1:", data["row1,col1"]
print "Value at row2,col1:", data["row2,col1"]
}'
এখানে, data["row1,col1"]
এবং অন্যান্য স্ট্রিং ব্যবহার করে মাল্টি-ডাইমেনশনাল অ্যারের মতো ব্যবহার করা হয়েছে।
AWK এ অ্যারে ম্যানিপুলেশন এবং ইটারেশন ডেটা প্রক্রিয়াকরণকে সহজ এবং কার্যকর করে তোলে। অ্যাসোসিয়েটিভ অ্যারে ব্যবহার করে ডেটা সংরক্ষণ, গণনা, এবং প্রসেসিং সহজে করা যায়। delete
অপারেটর ব্যবহার করে উপাদান মুছে ফেলা এবং for
লুপ ব্যবহার করে অ্যারের উপর ইটারেশন করা যায়। মাল্টি-ডাইমেনশনাল অ্যারে তৈরি করতে, কাস্টম স্ট্রিং ইনডেক্স ব্যবহার করা হয়।
common.read_more